﻿Public Class usc_mensajero

    Private bit_expandido As Boolean = False
    Private obj_usuario As cls_usuario_
    Private obj_mensajero As cls_mensajero_
    Private int_mensajero_ As Integer = 0

    Private Sub btn_estado_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_estado.Click
        If bit_expandido Then
            Me.Top += (int_mensajero_ * btn_estado.Height) + 23
            btn_estado.Appearance.BackColor = Color.Transparent
        Else
            Me.Top -= (int_mensajero_ * btn_estado.Height) + 23
            btn_estado.Appearance.BackColor = Color.Transparent
        End If
        bit_expandido = Not bit_expandido
    End Sub

    Public Sub Iniciar(ByRef prm_usuario As cls_usuario_, Optional ByVal prm_estado As cls_mensajero_.enu_estado = cls_mensajero_.enu_estado.Conectado)
        obj_usuario = prm_usuario
        obj_mensajero = New cls_mensajero_
        If obj_mensajero.Iniciar(obj_usuario.idusuario, prm_estado) = False Then
            Me.Enabled = False
        Else
            btn_estado.Text = "Mensajero: " & obj_usuario.ToString & " (Disponible)"
            tmr_estado.Enabled = True
            tmr_estado_Tick(Nothing, Nothing)
        End If
    End Sub

    Public Sub Desconectar()
        If obj_mensajero.idmensajero <> 0 Then
            btn_desconectado_Click(Nothing, Nothing)
        End If
    End Sub
    <System.Diagnostics.DebuggerHidden()>
    Private Sub tmr_estado_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmr_estado.Tick
        If obj_mensajero.Actualizar() Then
            Agregar()
        End If
    End Sub

    Private Sub Agregar()
        For i As Integer = Me.Controls.Count - 1 To 0 Step -1
            If Me.Controls(i).Name = "btn_usuario" Then 'And Me.Controls(i).Name <> "btn_pie" And Me.Controls(i).Name <> "btn_herramientas" Then
                Dim FlagElimina As Boolean = True
                If Not IsNothing(obj_mensajero.Items) Then
                    For Each mensajero As cls_mensajero_ In obj_mensajero.Items
                        If CType(Me.Controls(i).Tag, cls_mensajero_).idmensajero = mensajero.idmensajero Then
                            CType(Me.Controls(i).Tag, cls_mensajero_).estado = mensajero.estado
                            If CType(Me.Controls(i).Tag, cls_mensajero_).Mpendientes < mensajero.Mpendientes Then
                                My.Computer.Audio.Play(My.Resources.mensaje, AudioPlayMode.Background)
                            End If
                            CType(Me.Controls(i).Tag, cls_mensajero_).Mpendientes = mensajero.Mpendientes
                            CType(Me.Controls(i), DevExpress.XtraEditors.SimpleButton).Text = mensajero.usuario.ToString & " (" & mensajero.estado.ToString("G") & ")"
                            If mensajero.Mpendientes > 0 Then
                                If Me.Controls(i).Controls.Count <= 0 Then
                                    Dim Mpendiente_ As New DevExpress.XtraEditors.LabelControl
                                    Mpendiente_.Anchor = System.Windows.Forms.AnchorStyles.Bottom
                                    Mpendiente_.Appearance.BackColor = System.Drawing.Color.Transparent
                                    Mpendiente_.Appearance.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
                                    Mpendiente_.Appearance.ForeColor = System.Drawing.Color.White
                                    Mpendiente_.Appearance.Image = imc_estado_.Images(4)
                                    Mpendiente_.Appearance.ImageAlign = System.Drawing.ContentAlignment.TopCenter
                                    Mpendiente_.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center
                                    Mpendiente_.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None
                                    Mpendiente_.Location = New System.Drawing.Point(Me.Width - 25, 2)
                                    Mpendiente_.Name = "lbl_Mpendientes"
                                    Mpendiente_.Size = New System.Drawing.Size(21, 18)
                                    Mpendiente_.TabIndex = 14
                                    Mpendiente_.Text = mensajero.Mpendientes
                                    Me.Controls(i).Controls.Add(Mpendiente_)
                                Else
                                    Me.Controls(i).Controls(0).Visible = True
                                    Me.Controls(i).Controls(0).Text = mensajero.Mpendientes
                                End If
                            Else
                                If Me.Controls(i).Controls.Count > 0 Then
                                    Me.Controls(i).Controls(0).Visible = False
                                End If
                            End If

                            CType(Me.Controls(i), DevExpress.XtraEditors.SimpleButton).Image = imc_estado_.Images(mensajero.estado)
                            obj_mensajero.Items.Remove(mensajero)
                            FlagElimina = False
                            Exit For
                        End If
                    Next
                End If
                If FlagElimina Then
                    Me.Height -= Me.Controls(i).Height
                    If bit_expandido Then
                        Me.Top += Me.Controls(i).Height
                    End If
                    Me.Controls.RemoveAt(i)
                    int_mensajero_ -= 1
                End If

            End If
        Next
        If Not IsNothing(obj_mensajero.Items) Then
            For Each mensajero As cls_mensajero_ In obj_mensajero.Items
                Dim btn_usuario As New DevExpress.XtraEditors.SimpleButton
                btn_usuario.AllowFocus = False
                btn_usuario.Appearance.BackColor = System.Drawing.Color.White
                btn_usuario.Appearance.Options.UseBackColor = True
                btn_usuario.Appearance.Options.UseTextOptions = True
                btn_usuario.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near
                btn_usuario.ButtonStyle = DevExpress.XtraEditors.Controls.BorderStyles.HotFlat
                btn_usuario.Cursor = System.Windows.Forms.Cursors.Hand
                btn_usuario.Dock = System.Windows.Forms.DockStyle.Bottom
                btn_usuario.LookAndFeel.UseDefaultLookAndFeel = False
                btn_usuario.Name = "btn_usuario"
                btn_usuario.Size = New System.Drawing.Size(206, 24)
                btn_usuario.Tag = mensajero
                btn_usuario.Image = imc_estado_.Images(mensajero.estado)
                btn_usuario.Text = mensajero.usuario.ToString & " (" & mensajero.estado.ToString("G") & ")"
                int_mensajero_ += 1
                Me.Controls.Add(btn_usuario)
                Me.Height += btn_usuario.Height
                btn_usuario.BringToFront()
                AddHandler btn_usuario.Click, AddressOf btn_usuario_Click

                If mensajero.Mpendientes > 0 Then
                    Dim Mpendiente_ As New DevExpress.XtraEditors.LabelControl
                    Mpendiente_.Anchor = System.Windows.Forms.AnchorStyles.Bottom
                    Mpendiente_.Appearance.BackColor = System.Drawing.Color.Transparent
                    Mpendiente_.Appearance.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
                    Mpendiente_.Appearance.ForeColor = System.Drawing.Color.White
                    Mpendiente_.Appearance.Image = imc_estado_.Images(4)
                    Mpendiente_.Appearance.ImageAlign = System.Drawing.ContentAlignment.TopCenter
                    Mpendiente_.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center
                    Mpendiente_.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None
                    Mpendiente_.Location = New System.Drawing.Point(Me.Width - 25, 2)
                    Mpendiente_.Name = "lbl_Mpendientes"
                    Mpendiente_.Size = New System.Drawing.Size(21, 18)
                    Mpendiente_.TabIndex = 14
                    Mpendiente_.Text = mensajero.Mpendientes
                    btn_usuario.Controls.Add(Mpendiente_)
                End If

                If bit_expandido Then
                    Me.Top -= btn_estado.Height
                End If
            Next
        End If

    End Sub

    Public Sub btn_desconectado_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_desconectado.Click
        obj_mensajero.estado = cls_mensajero_.enu_estado.Desconectado
        btn_estado.Image = imc_estado_.Images(obj_mensajero.estado)
        btn_estado.Text = "Mensajero: " & obj_usuario.ToString & " (" & obj_mensajero.estado.ToString("G") & ")"
        tmr_estado_Tick(Nothing, Nothing)
    End Sub

    Private Sub btn_disponible_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_disponible.Click
        obj_mensajero.estado = cls_mensajero_.enu_estado.Conectado
        btn_estado.Image = imc_estado_.Images(obj_mensajero.estado)
        btn_estado.Text = "Mensajero: " & obj_usuario.ToString & " (" & obj_mensajero.estado.ToString("G") & ")"
        tmr_estado_Tick(Nothing, Nothing)
    End Sub

    Private Sub btn_ocupado_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_ocupado.Click
        obj_mensajero.estado = cls_mensajero_.enu_estado.Ocupado
        btn_estado.Image = imc_estado_.Images(obj_mensajero.estado)
        btn_estado.Text = "Mensajero: " & obj_usuario.ToString & " (" & obj_mensajero.estado.ToString("G") & ")"
        tmr_estado_Tick(Nothing, Nothing)
    End Sub

    Private Sub btn_ausente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_ausente.Click
        obj_mensajero.estado = cls_mensajero_.enu_estado.Ausente
        btn_estado.Image = imc_estado_.Images(obj_mensajero.estado)
        btn_estado.Text = "Mensajero: " & obj_usuario.ToString & " (" & obj_mensajero.estado.ToString("G") & ")"
        tmr_estado_Tick(Nothing, Nothing)
    End Sub

    Private Sub btn_usuario_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If IsNothing(CType(sender.tag, cls_mensajero_).ABMmensajeromensaje) Then
            CType(sender.tag, cls_mensajero_).ABMmensajeromensaje = New xtf_ABMmensajeromensaje(obj_mensajero, sender.tag)
            'CType(sender.tag, cls_mensajero_).pendientes = False
            'CType(sender, DevExpress.XtraEditors.SimpleButton).Appearance.BackColor = System.Drawing.Color.White
            CType(sender.tag, cls_mensajero_).ABMmensajeromensaje.Show()
        Else
            CType(sender.tag, cls_mensajero_).ABMmensajeromensaje.Focus()
        End If
    End Sub
    <System.Diagnostics.DebuggerHidden()>
    Private Sub tmr_pendientes_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmr_pendientes.Tick
        For i As Integer = Me.Controls.Count - 1 To 0 Step -1
            If Me.Controls(i).Name = "btn_usuario" Then 'And Me.Controls(i).Name <> "btn_pie" And Me.Controls(i).Name <> "btn_herramientas" Then
                If CType(Me.Controls(i).Tag, cls_mensajero_).Mpendientes > 0 Then
                    If Not bit_expandido Then
                        If btn_estado.Appearance.BackColor = Color.White Then
                            btn_estado.Appearance.BackColor = Color.Transparent
                        Else
                            btn_estado.Appearance.BackColor = Color.White
                        End If
                        Exit Sub
                    End If
                    If CType(Me.Controls(i), DevExpress.XtraEditors.SimpleButton).Appearance.BackColor = System.Drawing.Color.White Then
                        CType(Me.Controls(i), DevExpress.XtraEditors.SimpleButton).Appearance.BackColor = Color.FromArgb(207, 221, 238)
                    Else
                        CType(Me.Controls(i), DevExpress.XtraEditors.SimpleButton).Appearance.BackColor = System.Drawing.Color.White
                    End If
                End If
            End If
        Next
    End Sub


End Class
